Here we work with argopy (https://argopy.readthedocs.io), so with xarray datasets
author = "kevin.balem@ifremer.fr"
from argopy import IndexFetcher, DataFetcher
import matplotlib.pyplot as plt
import cmocean as cm
from matplotlib.ticker import MaxNLocator
from matplotlib.lines import Line2D
import cartopy.crs as ccrs
plt.rcParams['axes.grid'] = True
import numpy as np
import gsw
import xarray as xr
import pandas as pd
/opt/anaconda3/lib/python3.7/site-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead. import pandas.util.testing as tm
wmos = [6903075,6903076]
IndexFetcher(src='erddap',cache=False).float(wmos).plot()
(<Figure size 720x720 with 1 Axes>, <cartopy.mpl.geoaxes.GeoAxesSubplot at 0x7f465a1c7668>)
# GET DATA FROM REPO DATA COPY (cache=False because new profiles are added to the repo)
ds = DataFetcher(cache=False,src='localftp',local_ftp='/export/home/kbalem/Bureau/earise-rbr/data/floats/ftp',mode='expert').float(wmos).to_xarray()
# CALCULATE TEOS10 VARIABLE
ds.argo.teos10(['SA','SIG0','PTEMP'])
# TURN TO PROFILES
ds = ds.argo.point2profile()
ds0=ds.where(ds['PLATFORM_NUMBER']==wmos[0],drop=True)
ds1=ds.where(ds['PLATFORM_NUMBER']==wmos[1],drop=True)
def full_profiles(ds0=ds0,ds1=ds1,markersize=1):
fig,ax = plt.subplots(len(wmos),2,figsize=(16,len(wmos)*8),sharey=True)
ax[0,0].invert_yaxis();
ax[0,0].plot(ds0['TEMP'],-gsw.z_from_p(ds0['PRES'],ds0['LATITUDE'].mean()),'.k',markersize=markersize)
ax[0,1].plot(ds0['PSAL'],-gsw.z_from_p(ds0['PRES'],ds0['LATITUDE'].mean()),'.k',markersize=markersize)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[0,0].set_ylabel('Depth',fontsize='large',fontweight='bold')
a=ax[0,1].text(1.05,0.4,'float '+str(wmos[0]),rotation="vertical",transform = ax[0,1].transAxes, fontsize='large', fontweight='bold')
ax[0,0].set_xlabel('Temperature',fontsize='large',fontweight='bold')
ax[0,1].set_xlabel('Salinity',fontsize='large',fontweight='bold')
ax[1,0].plot(ds1['TEMP'],-gsw.z_from_p(ds1['PRES'],ds1['LATITUDE'].mean()),'.k',markersize=markersize)
ax[1,1].plot(ds1['PSAL'],-gsw.z_from_p(ds1['PRES'],ds1['LATITUDE'].mean()),'.k',markersize=markersize)
ax[1,0].set_ylabel('Depth',fontsize='large',fontweight='bold')
a=ax[1,1].text(1.05,0.4,'float '+str(wmos[1]),rotation="vertical",transform = ax[1,1].transAxes, fontsize='large', fontweight='bold')
ax[1,0].set_xlabel('Temperature',fontsize='large',fontweight='bold')
ax[1,1].set_xlabel('Salinity',fontsize='large',fontweight='bold')
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
return fig,ax
fig,ax = full_profiles()
# TS DIAGRAM
def full_ts(ds0=ds0,ds1=ds1,vmin=25.95,vmax=27.8,sigma=8):
mint=ds['PTEMP'].min()
maxt=ds['PTEMP'].max()
mins=ds['SA'].min()
maxs=ds['SA'].max()
tempL=np.linspace(mint-1,maxt+1,156)
salL=np.linspace(mins-1,maxs+1,156)
Tg, Sg = np.meshgrid(tempL,salL)
sigma_theta = gsw.sigma0(Sg, Tg)
fig,ax=plt.subplots(1,2,figsize=(25,10))
cs = ax[0].contour(Sg, Tg, sigma_theta,sigma, colors='grey', zorder=1)
cl=ax[0].clabel(cs,fontsize=10,inline=False,fmt='%.1f')
sc=ax[0].scatter(ds0['SA'],ds0['PTEMP'],c=ds0['SIG0'],s=10,cmap=cm.cm.matter,vmin=vmin,vmax=vmax)
ax[0].set_xlabel('Salinity ($‰$)')
ax[0].set_ylabel('Temperature[$^\circ$C]')
ax[0].set_title(str(wmos[0]),fontsize=14, fontweight='bold')
ax[0].xaxis.set_major_locator(MaxNLocator(nbins=6))
ax[0].yaxis.set_major_locator(MaxNLocator(nbins=8))
ax[0].tick_params(direction='out')
cs = ax[1].contour(Sg, Tg, sigma_theta, sigma, colors='grey', zorder=1)
cl=ax[1].clabel(cs,fontsize=10,inline=False,fmt='%.1f')
sc=ax[1].scatter(ds1['SA'],ds1['PTEMP'],c=ds1['SIG0'],s=10,cmap=cm.cm.matter,vmin=vmin,vmax=vmax)
ax[1].set_xlabel('Salinity ($‰$)')
ax[1].set_ylabel('Temperature[$^\circ$C]')
ax[1].set_title(str(wmos[1]),fontsize=14, fontweight='bold')
ax[1].xaxis.set_major_locator(MaxNLocator(nbins=6))
ax[1].yaxis.set_major_locator(MaxNLocator(nbins=8))
ax[1].tick_params(direction='out')
cb=plt.colorbar(sc,ax=ax.ravel().tolist())
cb.ax.tick_params(direction='out')
cb.set_label('Density[kg m$^{-3}$]')
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0, label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10)],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0, label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10)],loc='lower right')
return fig,ax
fig,ax = full_ts()
# WOA OPENDAP URL FOR 2005-2017, GLOBAL 1/4°
woa_temp='https://www.ncei.noaa.gov/thredds-ocean/dodsC/ncei/woa/temperature/A5B7/0.25/woa18_A5B7_t13_04.nc'
woa_psal='https://www.ncei.noaa.gov/thredds-ocean/dodsC/ncei/woa/salinity/A5B7/0.25/woa18_A5B7_s13_04.nc'
# LOAD DATASETS, No need to decode times for a clim
woat = xr.open_dataset(woa_temp,decode_times=False)
woas = xr.open_dataset(woa_psal,decode_times=False)
# INTERPOLATE WOA T/S/SIG TO FLOAT POSITION
woat_float0 = woat['t_mn'].interp(lat=ds0['LATITUDE'],lon=ds0['LONGITUDE'],method='linear').squeeze().to_dataset()
woas_float0 = woas['s_mn'].interp(lat=ds0['LATITUDE'],lon=ds0['LONGITUDE'],method='linear').squeeze().to_dataset()
woa_float0 = xr.merge([woat_float0,woas_float0])
woat_float1 = woat['t_mn'].interp(lat=ds1['LATITUDE'],lon=ds1['LONGITUDE'],method='linear').squeeze().to_dataset()
woas_float1 = woas['s_mn'].interp(lat=ds1['LATITUDE'],lon=ds1['LONGITUDE'],method='linear').squeeze().to_dataset()
woa_float1 = xr.merge([woat_float1,woas_float1])
# Reduce depth range
woa_float0 = woa_float0.sel(depth=slice(0,2000))
woa_float1 = woa_float1.sel(depth=slice(0,2000))
fig,ax=full_profiles()
ax[0,0].plot(woa_float0['t_mn'],woa_float0['depth'],'.r',markersize=4)
ax[0,1].plot(woa_float0['s_mn'],woa_float0['depth'],'.r',markersize=4)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='WOA ',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[1,0].plot(woa_float1['t_mn'],woa_float1['depth'],'.r',linewidth=1)
ax[1,1].plot(woa_float1['s_mn'],woa_float1['depth'],'.r')
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='WOA ',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
<matplotlib.legend.Legend at 0x7f46426b4518>
# ZOOM
fig,ax=full_profiles(markersize=4)
ax[0,0].set_ylim(2000,1500)
ax[0,0].plot(woa_float0['t_mn'],woa_float0['depth'],'.r',markersize=8)
ax[0,1].plot(woa_float0['s_mn'],woa_float0['depth'],'.r',markersize=8)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='WOA ',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[1,0].plot(woa_float1['t_mn'],woa_float1['depth'],'.r',linewidth=1)
ax[1,1].plot(woa_float1['s_mn'],woa_float1['depth'],'.r')
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='WOA ',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[0,0].set_xlim(4,6.5); ax[1,0].set_xlim(4,6.5);
ax[0,1].set_xlim(35.,35.5); ax[1,1].set_xlim(35.,35.5);
# GSW
pr0 = np.empty([len(woa_float0['depth']),len(woa_float0['N_PROF'])])
pr1 = np.empty([len(woa_float1['depth']),len(woa_float1['N_PROF'])])
for i in range(len(woa_float0['N_PROF'])):
pr0[:,i]=gsw.p_from_z(-woa_float0['depth'],woa_float0['LATITUDE'].isel(N_PROF=i))
woa_float0['PRES']=xr.DataArray(pr0,dims=['depth','N_PROF'])
woa_float0['SA']=xr.DataArray(gsw.SA_from_SP(woa_float0['s_mn'],woa_float0['PRES'],woa_float0['LONGITUDE'],woa_float0['LATITUDE']),dims=['depth','N_PROF'])
woa_float0['PTEMP']=xr.DataArray(gsw.pt0_from_t(woa_float0['SA'],woa_float0['t_mn'],woa_float0['PRES']),dims=['depth','N_PROF'])
woa_float0['SIG0']=xr.DataArray(gsw.sigma0(woa_float0['SA'], woa_float0['PTEMP']),dims=['depth','N_PROF'])
for i in range(len(woa_float1['N_PROF'])):
pr0[:,i]=gsw.p_from_z(-woa_float1['depth'],woa_float1['LATITUDE'].isel(N_PROF=i))
woa_float1['PRES']=xr.DataArray(pr0,dims=['depth','N_PROF'])
woa_float1['SA']=xr.DataArray(gsw.SA_from_SP(woa_float1['s_mn'],woa_float1['PRES'],woa_float1['LONGITUDE'],woa_float1['LATITUDE']),dims=['depth','N_PROF'])
woa_float1['PTEMP']=xr.DataArray(gsw.pt0_from_t(woa_float1['SA'],woa_float1['t_mn'],woa_float1['PRES']),dims=['depth','N_PROF'])
woa_float1['SIG0']=xr.DataArray(gsw.sigma0(woa_float1['SA'], woa_float1['PTEMP']),dims=['depth','N_PROF'])
woa_float1
<xarray.Dataset>
Dimensions: (N_PROF: 18, depth: 67)
Coordinates:
* N_PROF (N_PROF) int64 0 19 20 21 22 23 24 25 ... 28 29 30 31 32 33 34 35
* depth (depth) float64 0.0 5.0 10.0 15.0 ... 1.9e+03 1.95e+03 2e+03
time float32 73.5
lat (N_PROF) float64 29.17 29.15 29.1 29.09 ... 29.64 30.05 30.41
lon (N_PROF) float64 -19.0 -19.02 -19.12 ... -18.53 -18.44 -18.55
TIME (N_PROF) datetime64[ns] 2020-12-11T10:25:00 ... 2021-05-21T05:...
LATITUDE (N_PROF) float64 29.17 29.15 29.1 29.09 ... 29.64 30.05 30.41
LONGITUDE (N_PROF) float64 -19.0 -19.02 -19.12 ... -18.53 -18.44 -18.55
Data variables:
t_mn (depth, N_PROF) float64 nan nan nan nan nan ... nan nan nan nan
s_mn (depth, N_PROF) float64 36.85 36.85 nan nan ... nan nan nan nan
PRES (depth, N_PROF) float64 0.0 0.0 0.0 ... 2.023e+03 2.024e+03
SA (depth, N_PROF) float64 37.02 37.02 nan nan ... nan nan nan nan
PTEMP (depth, N_PROF) float64 nan nan nan nan nan ... nan nan nan nan
SIG0 (depth, N_PROF) float64 nan nan nan nan nan ... nan nan nan nanarray([ 0, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35])
array([ 0., 5., 10., 15., 20., 25., 30., 35., 40., 45.,
50., 55., 60., 65., 70., 75., 80., 85., 90., 95.,
100., 125., 150., 175., 200., 225., 250., 275., 300., 325.,
350., 375., 400., 425., 450., 475., 500., 550., 600., 650.,
700., 750., 800., 850., 900., 950., 1000., 1050., 1100., 1150.,
1200., 1250., 1300., 1350., 1400., 1450., 1500., 1550., 1600., 1650.,
1700., 1750., 1800., 1850., 1900., 1950., 2000.])array(73.5, dtype=float32)
array([29.16698167, 29.14661667, 29.10236333, 29.09201167, 29.05589833,
29.16621833, 29.403165 , 29.61847333, 29.87339 , 30.188525 ,
30.25565833, 30.11950667, 29.839565 , 29.52730333, 29.397985 ,
29.63578667, 30.05389167, 30.41144667])array([-19.00256167, -19.01972333, -19.11748333, -19.19157167,
-19.21113333, -19.24770667, -19.31360333, -19.471775 ,
-19.623935 , -19.645155 , -19.76130833, -19.79596 ,
-19.675635 , -19.46817667, -18.98621167, -18.52723167,
-18.43598333, -18.54520833])array(['2020-12-11T10:25:00.000000000', '2020-12-12T05:42:20.000000000',
'2020-12-22T05:41:20.000000000', '2021-01-01T05:44:20.000000000',
'2021-01-11T05:30:20.000000000', '2021-01-21T05:26:20.000000000',
'2021-01-31T05:33:20.000000000', '2021-02-10T05:39:20.000000000',
'2021-02-20T05:51:20.000000000', '2021-03-02T05:49:20.000000000',
'2021-03-12T05:39:20.000000000', '2021-03-22T05:32:20.000000256',
'2021-03-31T15:29:20.000000000', '2021-04-11T05:46:20.000000000',
'2021-04-21T05:43:20.000000000', '2021-05-01T05:36:20.000000000',
'2021-05-11T05:34:20.000000000', '2021-05-21T05:33:20.000000000'],
dtype='datetime64[ns]')array([29.16698167, 29.14661667, 29.10236333, 29.09201167, 29.05589833,
29.16621833, 29.403165 , 29.61847333, 29.87339 , 30.188525 ,
30.25565833, 30.11950667, 29.839565 , 29.52730333, 29.397985 ,
29.63578667, 30.05389167, 30.41144667])array([-19.00256167, -19.01972333, -19.11748333, -19.19157167,
-19.21113333, -19.24770667, -19.31360333, -19.471775 ,
-19.623935 , -19.645155 , -19.76130833, -19.79596 ,
-19.675635 , -19.46817667, -18.98621167, -18.52723167,
-18.43598333, -18.54520833])array([[ nan, nan, nan, ..., 19.56032091,
nan, 19.01039807],
[ nan, nan, nan, ..., 19.27313214,
nan, 18.97005256],
[19.90413882, 19.92035109, nan, ..., 19.25128783,
nan, 18.95651843],
...,
[ 4.61089416, 4.60302342, 4.59258237, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan]])array([[36.84969759, 36.84659114, nan, ..., nan,
nan, nan],
[36.8497734 , 36.84663206, nan, ..., nan,
nan, nan],
[36.84939684, 36.84614153, nan, ..., nan,
nan, nan],
...,
[35.13615922, 35.13479267, 35.13258462, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan]])array([[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 5.03398365, 5.03397561, 5.03395814, ..., 5.03416981,
5.03433739, 5.03448182],
[ 10.06809038, 10.06807429, 10.06803935, ..., 10.06846271,
10.06879786, 10.06908674],
...,
[1921.68375225, 1921.68066808, 1921.67397087, ..., 1921.75512318,
1921.81936846, 1921.87474249],
[1972.4892769 , 1972.48611085, 1972.47923582, ..., 1972.56254278,
1972.62849381, 1972.68533806],
[2023.30671045, 2023.30346247, 2023.29640955, ..., 2023.38187212,
2023.44952967, 2023.5078448 ]])array([[37.02367059, 37.02054927, nan, ..., nan,
nan, nan],
[37.02375299, 37.02059666, nan, ..., nan,
nan, nan],
[37.02338065, 37.02010989, nan, ..., nan,
nan, nan],
...,
[35.30645312, 35.30508533, 35.30287918, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan]])array([[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[19.9022703 , 19.91848154, nan, ..., nan,
nan, nan],
...,
[ 4.44131988, 4.4335649 , 4.42327891, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan]])array([[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[26.18461764, 26.17783637, nan, ..., nan,
nan, nan],
...,
[27.85004258, 27.84982095, 27.84921646, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan]])# TS DIAGRAM
fig,ax = full_ts()
sc_b=ax[0].scatter(woa_float0['SA'],woa_float0['PTEMP'],c=woa_float0['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k')
sc_b=ax[1].scatter(woa_float1['SA'],woa_float1['PTEMP'],c=woa_float1['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k')
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='WOA',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='WOA',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f4635418d30>
# ZOOM
fig,ax = full_ts(vmin=27.8,vmax=27.9,sigma=40)
ax[0].set_ylim(4,7.5); ax[1].set_ylim(4,7.5)
ax[0].set_xlim(35.2,35.6); ax[1].set_xlim(35.2,35.6)
sc_b=ax[0].scatter(woa_float0['SA'],woa_float0['PTEMP'],c=woa_float0['SIG0'],s=20,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k')
sc_b=ax[1].scatter(woa_float1['SA'],woa_float1['PTEMP'],c=woa_float1['SIG0'],s=20,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k')
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='WOA',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='WOA',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f46351951d0>
plt.figure()
# FETCH PROFILES META IN OUR REGION
IndexFetcher(cache=True,src='erddap').region([-19.8,-18.4,29.0,30.3]).plot()
# RBR PROFILES
plt.plot(ds['LONGITUDE'],ds['LATITUDE'],'k*',markersize=10)
[<matplotlib.lines.Line2D at 0x7fbaea985780>]
<Figure size 432x288 with 0 Axes>
# GET DATA FROM ERDDAP, in standard mode to automatically keep good data
px = DataFetcher(cache=True,src='erddap',mode='standard').region([-19.8,-18.4,29.0,30.3,0.,2000.]).to_xarray()
# CALCULATE TEOS10 VARIABLE
px.argo.teos10(['SA','SIG0','PTEMP'])
# TURN TO PROFILES
px = px.argo.point2profile()
# Keep only december to may profiles
px['MONTH']=xr.DataArray(np.array(pd.DatetimeIndex(px['TIME'].values).month),dims='N_PROF')
px = px.where((px['MONTH']<=5)|(px['MONTH']==12), drop=True)
px
<xarray.Dataset>
Dimensions: (N_LEVELS: 1018, N_PROF: 109)
Coordinates:
* N_PROF (N_PROF) int64 2 3 15 16 17 ... 191 192 193 194 195
TIME (N_PROF) datetime64[ns] 2002-05-14T05:00:00 ... 20...
* N_LEVELS (N_LEVELS) int64 0 1 2 3 4 ... 1014 1015 1016 1017
LONGITUDE (N_PROF) float64 -19.3 -19.23 ... -18.96 -18.65
LATITUDE (N_PROF) float64 29.08 29.31 30.05 ... 29.58 29.95
Data variables:
CONFIG_MISSION_NUMBER (N_PROF) float64 2.0 2.0 2.0 2.0 ... 2.0 2.0 2.0 2.0
CYCLE_NUMBER (N_PROF) float64 5.0 6.0 58.0 59.0 ... 14.0 15.0 16.0
DATA_MODE (N_PROF) object 'D' 'D' 'D' 'D' ... 'R' 'R' 'R' 'R'
DIRECTION (N_PROF) object 'A' 'A' 'A' 'A' ... 'A' 'A' 'A' 'A'
PLATFORM_NUMBER (N_PROF) float64 1.9e+06 1.9e+06 ... 6.903e+06
POSITION_QC (N_PROF) float64 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
PRES (N_PROF, N_LEVELS) float32 15.0 25.0 35.0 ... nan nan
PRES_QC (N_PROF) float64 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
PSAL (N_PROF, N_LEVELS) float32 36.873 36.869 ... nan nan
PSAL_QC (N_PROF) float64 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
PTEMP (N_PROF, N_LEVELS) float64 19.41 19.41 ... nan nan
SA (N_PROF, N_LEVELS) float64 37.05 37.04 ... nan nan
SIG0 (N_PROF, N_LEVELS) float64 26.35 26.35 ... nan nan
TEMP (N_PROF, N_LEVELS) float32 19.41 19.41 ... nan nan
TEMP_QC (N_PROF) float64 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
TIME_QC (N_PROF) float64 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
MONTH (N_PROF) float64 5.0 5.0 2.0 3.0 ... 4.0 4.0 5.0 5.0
Attributes:
DATA_ID: ARGO
DOI: http://doi.org/10.17882/42182
Fetched_from: https://www.ifremer.fr/erddap
Fetched_by: kbalem
Fetched_date: 2021/05/21
Fetched_constraints: [x=-19.80/-18.40; y=29.00/30.30; z=0.0/2000.0]
Fetched_uri: ['https://www.ifremer.fr/erddap/tabledap/ArgoFloats...
history: Variables filtered according to DATA_MODE; Variable...array([ 2, 3, 15, 16, 17, 18, 19, 20, 22, 23, 27, 48, 49, 50,
51, 52, 53, 54, 55, 56, 68, 69, 70, 71, 72, 73, 87, 88,
89, 77, 90, 78, 79, 80, 57, 91, 92, 93, 100, 101, 102, 103,
104, 105, 106, 30, 107, 108, 31, 58, 32, 109, 110, 94, 95, 96,
97, 98, 99, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 175,
176, 1, 33, 34, 35, 36, 37, 38, 39, 40, 41, 157, 158, 159,
160, 161, 162, 163, 164, 165, 142, 143, 144, 145, 0, 182, 183, 184,
185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195])array(['2002-05-14T05:00:00.000000000', '2002-05-24T05:06:00.000000000',
'2006-02-21T03:44:00.000000000', '2006-03-03T03:49:00.000000000',
'2006-03-13T03:30:00.000000000', '2006-03-23T03:42:00.000000000',
'2006-04-02T03:29:00.000000000', '2006-04-12T03:35:00.000000000',
'2006-12-22T12:27:44.000000000', '2007-01-01T13:16:36.000000000',
'2008-02-14T11:58:03.000000000', '2009-12-06T12:20:05.000000000',
'2009-12-16T11:46:47.000000000', '2009-12-26T11:16:17.000000000',
'2010-04-05T11:10:33.000000000', '2010-04-15T11:48:59.000000000',
'2011-04-20T10:48:47.000000000', '2011-04-30T11:33:42.000000000',
'2011-05-10T11:25:36.000000000', '2011-05-20T10:51:05.000000000',
'2011-12-06T00:58:02.000000000', '2011-12-21T02:20:24.000000000',
'2012-12-14T22:52:24.000000000', '2012-12-29T23:17:55.000000000',
'2013-01-14T02:29:24.000000000', '2013-01-28T23:26:14.000000000',
'2013-04-23T08:57:47.000000000', '2014-02-17T08:53:45.000000000',
'2014-02-27T06:52:43.000000000', '2014-03-15T14:21:36.000000000',
'2014-04-08T06:49:14.000000000', '2014-04-14T10:45:41.000000000',
'2014-04-24T14:21:59.000000000', '2014-05-04T11:45:41.000000000',
'2014-05-07T23:56:59.000000000', '2014-05-08T08:52:57.000000000',
'2014-05-18T07:06:29.000000000', '2014-05-28T08:52:23.000000000',
'2015-03-31T05:53:00.000000000', '2015-04-05T05:50:00.000000000',
...
'2017-12-16T19:33:00.000000000', '2018-04-11T17:49:00.000000000',
'2018-04-14T11:47:40.000000000', '2018-04-17T11:55:40.000000000',
'2018-04-20T11:49:40.000000000', '2018-04-23T11:54:40.000000000',
'2018-04-26T12:02:40.000000000', '2018-04-29T11:58:40.000000000',
'2018-05-02T11:54:40.000000000', '2018-05-05T11:57:40.000000000',
'2018-05-07T01:39:23.000000000', '2018-12-24T05:41:00.000000000',
'2019-01-03T05:40:00.000000000', '2019-01-13T05:34:00.000000000',
'2019-01-23T05:39:00.000000000', '2019-02-02T05:33:00.000000000',
'2019-02-12T05:36:00.000000000', '2019-02-22T05:29:00.000000000',
'2019-03-04T05:32:00.000000000', '2019-03-14T05:36:00.000000000',
'2020-04-05T05:09:00.000000000', '2020-04-15T05:18:00.000000000',
'2020-04-25T05:37:00.000000000', '2020-05-25T05:29:00.000000000',
'2020-12-10T18:26:00.000000000', '2020-12-12T05:26:30.000000000',
'2020-12-22T05:27:30.000000000', '2021-01-01T05:33:30.000000000',
'2021-01-11T05:37:30.000000000', '2021-01-21T05:34:30.000000000',
'2021-01-31T05:26:30.000000000', '2021-02-10T05:37:30.000000000',
'2021-02-20T05:30:30.000000000', '2021-03-02T05:38:30.000000000',
'2021-03-12T05:33:30.000000000', '2021-04-11T05:38:30.000000000',
'2021-04-21T05:42:30.000000000', '2021-05-01T05:46:30.000000000',
'2021-05-11T05:45:30.000000000'], dtype='datetime64[ns]')array([ 0, 1, 2, ..., 1015, 1016, 1017])
array([-19.302 , -19.235 , -19.613 , -19.307 ,
-18.87 , -18.798 , -18.725 , -18.602 ,
-19.47299957, -19.71800041, -19.45499992, -18.62999916,
-19.03000069, -19.31200027, -19.1779995 , -18.61000061,
-19.153 , -18.887 , -18.763 , -18.737 ,
-19.259 , -19.62 , -19.481 , -19.483 ,
-19.414 , -18.873 , -19.781 , -19.064 ,
-19.575 , -19.538 , -19.541 , -19.502 ,
-19.575 , -19.743 , -18.471 , -19.386 ,
-19.578 , -19.72 , -18.463065 , -18.49731167,
-18.50046333, -18.57160667, -18.65185167, -18.78480167,
-18.87676667, -18.855 , -18.92749667, -18.95606 ,
-18.978 , -18.666 , -19.464 , -18.93842167,
-18.99732 , -18.4859 , -18.7544 , -18.9591 ,
-19.0942 , -19.1418 , -19.1425 , -19.26692167,
-19.21086167, -19.26507 , -19.33983 , -19.43046333,
-19.55742167, -19.752885 , -19.76117833, -19.57670167,
-19.56884 , -18.867 , -19.522 , -18.49936833,
-18.48464167, -18.45897167, -18.44397 , -18.42888167,
-18.41819 , -18.40956333, -18.40222167, -18.40022 ,
-19.7348 , -18.942 , -18.952 , -19.104 ,
-19.234 , -19.266 , -19.164 , -19.009 ,
-19.011 , -19.095 , -18.501 , -18.917 ,
-19.45 , -19.436 , -19.00882667, -19.00287833,
-19.10077167, -19.18482 , -19.22271333, -19.26173167,
-19.32334333, -19.46715667, -19.65580833, -19.75253833,
-19.77647 , -19.75431167, -19.47863 , -18.96217 ,
-18.65334 ])array([29.08 , 29.311 , 30.046 , 30.152 , 29.784 ,
29.476 , 29.43 , 29.743 , 29.99500084, 29.75900078,
30.20899963, 30.24500084, 30.28800011, 30.28300095, 30.16799927,
29.94599915, 30.165 , 30.019 , 29.862 , 29.637 ,
29.981 , 30.18 , 30.294 , 29.499 , 29.401 ,
29.631 , 30.23 , 29.065 , 29.484 , 29.106 ,
30.113 , 29.858 , 29.399 , 29.099 , 30.253 ,
30.258 , 30.221 , 30.24 , 29.36645667, 29.35907333,
29.3141 , 29.25226833, 29.23712167, 29.25764667, 29.20940333,
29.877 , 29.11013167, 29.02015 , 29.482 , 30.217 ,
29.468 , 29.14659167, 29.30861 , 29.2011 , 29.1694 ,
29.2527 , 29.2881 , 29.2294 , 29.0604 , 30.24215333,
30.08608167, 29.84341667, 29.61126833, 29.47364 , 29.38462 ,
29.34008 , 29.695575 , 29.45801667, 29.1975 , 30.092 ,
30.101 , 29.15595667, 29.1382 , 29.13259667, 29.1364 ,
29.12838167, 29.12056833, 29.10823167, 29.12612667, 29.13557833,
29.19438 , 30.251 , 29.985 , 29.671 , 29.335 ,
29.124 , 29.06 , 29.162 , 29.496 , 29.947 ,
29.439 , 29.401 , 29.711 , 29.441 , 29.165725 ,
29.150605 , 29.13182833, 29.12126333, 29.09465167, 29.18438 ,
29.42158667, 29.65736833, 29.91031 , 30.14338667, 30.22611333,
29.670635 , 29.50829 , 29.58076333, 29.95490167])array([ 2., 2., 2., 2., 2., 2., 2., 2., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
-1., -1., -1., -1., -1., -1., -1., -1., 1., -1., -1., -1., 4.,
4., 4., 4., 4., 4., 4., 1., 4., 4., 1., 1., 1., 4.,
4., 63., 55., 61., 55., 61., 64., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 2., 2., 1., 1., 2., 2., 2., 2., 2.,
2., 2., 5., 2., 2., 2., 2., 2., 2., 2., 2., 2., 3.,
3., 3., 3., 1., 1., 2., 2., 2., 2., 2., 2., 2., 2.,
2., 2., 2., 2., 2.])array([ 5., 6., 58., 59., 60., 61., 62., 63., 6., 7., 14.,
118., 119., 120., 130., 131., 168., 169., 170., 171., 113., 114.,
138., 139., 140., 141., 20., 50., 51., 90., 55., 93., 94.,
95., 172., 58., 59., 60., 6., 7., 8., 9., 10., 11.,
12., 182., 13., 14., 183., 197., 184., 17., 18., 124., 125.,
126., 127., 128., 129., 10., 11., 12., 13., 14., 15., 16.,
22., 23., 24., 83., 84., 1., 1., 2., 3., 4., 5.,
6., 7., 8., 174., 21., 22., 23., 24., 25., 26., 27.,
28., 29., 57., 58., 59., 62., 1., 1., 2., 3., 4.,
5., 6., 7., 8., 9., 10., 13., 14., 15., 16.])array(['D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D',
'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D',
'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D',
'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D',
'D', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'D', 'D', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'D', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
'R', 'R', 'R', 'R', 'R'], dtype=object)array(['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A', 'A', 'D', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'D', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A'], dtype=object)array([1900070., 1900070., 1900352., 1900352., 1900352., 1900352.,
1900352., 1900352., 1900735., 1900735., 1900777., 6900126.,
6900126., 6900126., 6900126., 6900126., 6900126., 6900126.,
6900126., 6900126., 6900512., 6900512., 6900512., 6900512.,
6900512., 6900512., 6901143., 6901143., 6901143., 6901124.,
6901143., 6901124., 6901124., 6901124., 6900511., 6901143.,
6901143., 6901143., 6901246., 6901246., 6901246., 6901246.,
6901246., 6901246., 6901246., 1901457., 6901246., 6901246.,
1901457., 6900511., 1901457., 6901246., 6901246., 6901156.,
6901156., 6901156., 6901156., 6901156., 6901156., 6901248.,
6901248., 6901248., 6901248., 6901248., 6901248., 6901248.,
6901248., 6901248., 6901248., 6901672., 6901672., 3902126.,
3902126., 3902126., 3902126., 3902126., 3902126., 3902126.,
3902126., 3902126., 4901588., 6901258., 6901258., 6901258.,
6901258., 6901258., 6901258., 6901258., 6901258., 6901258.,
6901254., 6901254., 6901254., 6901254., 6903010., 6903010.,
6903010., 6903010., 6903010., 6903010., 6903010., 6903010.,
6903010., 6903010., 6903010., 6903010., 6903010., 6903010.,
6903010.])array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1.])array([[ 15. , 25. , 35. , ..., nan, nan, nan],
[ 15. , 25. , 35. , ..., nan, nan, nan],
[ 15. , 25. , 35. , ..., nan, nan, nan],
...,
[ 3.1, 4. , 4.9, ..., 1987.9, 1992.9, 1997.1],
[ 3.1, 3.9, 4.7, ..., nan, nan, nan],
[ 3. , 4.2, 5.1, ..., nan, nan, nan]],
dtype=float32)array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1.])array([[36.873, 36.869, 36.874, ..., nan, nan, nan],
[36.871, 36.875, 36.913, ..., nan, nan, nan],
[36.952, 36.952, 36.951, ..., nan, nan, nan],
...,
[36.878, 36.875, 36.875, ..., 35.112, 35.111, 35.109],
[36.928, 36.925, 36.93 , ..., nan, nan, nan],
[36.956, 36.957, 36.956, ..., nan, nan, nan]],
dtype=float32)array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1.])array([[19.40726409, 19.40543947, 19.4036139 , ..., nan,
nan, nan],
[19.78722774, 19.78537799, 19.78352625, ..., nan,
nan, nan],
[19.01630075, 19.01550214, 19.01570002, ..., nan,
nan, nan],
...,
[20.39541459, 20.40224444, 20.4040752 , ..., 4.21991799,
4.20463503, 4.19239349],
[20.66540943, 20.66725578, 20.67210415, ..., nan,
nan, nan],
[20.79242483, 20.79419579, 20.79402343, ..., nan,
nan, nan]])array([[37.04708601, 37.04304076, 37.04805324, ..., nan,
nan, nan],
[37.04507499, 37.04907054, 37.08723592, ..., nan,
nan, nan],
[37.12646178, 37.12643228, 37.12541492, ..., nan,
nan, nan],
...,
[37.05211241, 37.04910114, 37.04910237, ..., 35.28230475,
35.2813159 , 35.27932028],
[37.10235176, 37.09933631, 37.10436188, ..., nan,
nan, nan],
[37.13048703, 37.13149226, 37.13048888, ..., nan,
nan, nan]])array([[26.35062107, 26.34802296, 26.35231168, ..., nan,
nan, nan],
[26.24904555, 26.25257105, 26.282057 , ..., nan,
nan, nan],
[26.51269002, 26.51287403, 26.51204873, ..., nan,
nan, nan],
...,
[26.09172676, 26.08759759, 26.08710412, ..., 27.85589967,
27.85676311, 27.85650052],
[26.05662937, 26.05383959, 26.05633067, ..., nan,
nan, nan],
[26.0433088 , 26.04358682, 26.04287314, ..., nan,
nan, nan]])array([[19.41 , 19.41 , 19.41 , ..., nan, nan, nan],
[19.79 , 19.79 , 19.79 , ..., nan, nan, nan],
[19.019, 19.02 , 19.022, ..., nan, nan, nan],
...,
[20.396, 20.403, 20.405, ..., 4.393, 4.378, 4.366],
[20.666, 20.668, 20.673, ..., nan, nan, nan],
[20.793, 20.795, 20.795, ..., nan, nan, nan]],
dtype=float32)array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1.])array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1.])array([ 5., 5., 2., 3., 3., 3., 4., 4., 12., 1., 2., 12., 12.,
12., 4., 4., 4., 4., 5., 5., 12., 12., 12., 12., 1., 1.,
4., 2., 2., 3., 4., 4., 4., 5., 5., 5., 5., 5., 3.,
4., 4., 4., 4., 4., 4., 5., 5., 5., 5., 5., 5., 5.,
5., 1., 2., 2., 2., 2., 2., 12., 12., 1., 1., 1., 1.,
1., 2., 2., 3., 12., 12., 4., 4., 4., 4., 4., 4., 4.,
5., 5., 5., 12., 1., 1., 1., 2., 2., 2., 3., 3., 4.,
4., 4., 5., 12., 12., 12., 1., 1., 1., 1., 2., 2., 3.,
3., 4., 4., 5., 5.])fig,ax = full_profiles()
ax[0,0].plot(px['TEMP'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=0.5,zorder=0)
ax[0,1].plot(px['PSAL'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=0.5,zorder=0)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Nearby profiles',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[1,0].plot(px['TEMP'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=0.5,zorder=0)
ax[1,1].plot(px['PSAL'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=0.5,zorder=0)
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Nearby profiles',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
<matplotlib.legend.Legend at 0x7fbaec82cb70>
fig,ax = full_profiles(markersize=4)
ax[0,0].set_ylim(2000,1500)
ax[0,0].plot(px['TEMP'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=4,zorder=0)
ax[0,1].plot(px['PSAL'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=4,zorder=0)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Nearby profiles',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[1,0].plot(px['TEMP'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=4,zorder=0)
ax[1,1].plot(px['PSAL'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=4,zorder=0)
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Nearby profiles',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[0,0].set_xlim(4,6.5); ax[1,0].set_xlim(4,6.5);
ax[0,1].set_xlim(35.,35.5); ax[1,1].set_xlim(35.,35.5);
# TS DIAGRAM
fig,ax = full_ts()
sc_b=ax[0].scatter(px['SA'],px['PTEMP'],c=px['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k',zorder=0)
sc_b=ax[1].scatter(px['SA'],px['PTEMP'],c=px['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k',zorder=0)
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Nearby profiles',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Nearby profiles',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f4627b77ef0>
# TS DIAGRAM
fig,ax = full_ts(vmin=27.8,vmax=27.9,sigma=40)
ax[0].set_ylim(4,7.5); ax[1].set_ylim(4,7.5)
ax[0].set_xlim(35.2,35.6); ax[1].set_xlim(35.2,35.6)
sc_b=ax[0].scatter(px['SA'],px['PTEMP'],c=px['SIG0'],s=20,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k',zorder=0)
sc_b=ax[1].scatter(px['SA'],px['PTEMP'],c=px['SIG0'],s=20,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k',zorder=0)
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Nearby profiles',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Nearby profiles',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f46278f92b0>
st25=pd.read_csv('../data/ref/RAPROCAN2012/Station25.csv',header=4,sep=';',names=['PRES','PSAL','TEMP'])
mt25={'latitude':29.17,'longitude':-19.00,'time':np.datetime64('2020-12-10T17:41:05')}
st25['SA'] = gsw.SA_from_SP(st25['PSAL'],st25['PRES'],mt25['longitude'],mt25['latitude'])
st25['PTEMP'] = gsw.pt0_from_t(st25['SA'],st25['TEMP'],st25['PRES'])
st25['SIG0'] = gsw.sigma0(st25['SA'], st25['PTEMP'])
st25.head()
| PRES | PSAL | TEMP | SA | PTEMP | SIG0 | |
|---|---|---|---|---|---|---|
| 0 | 8.0 | 36.9540 | 21.3449 | 37.128475 | 21.343339 | 25.870281 |
| 1 | 10.0 | 36.9541 | 21.3478 | 37.128578 | 21.345849 | 25.869658 |
| 2 | 12.0 | 36.9539 | 21.3508 | 37.128373 | 21.348458 | 25.868777 |
| 3 | 14.0 | 36.9539 | 21.3484 | 37.128369 | 21.345668 | 25.869552 |
| 4 | 16.0 | 36.9543 | 21.3442 | 37.128767 | 21.341078 | 25.871130 |
# LET's KEEP ONLY THE 1st PROFILES
ds0b=ds0.isel(N_PROF=[0,1,2,3])
ds1b=ds1.isel(N_PROF=[0,1,2,3])
fig,ax = full_profiles(ds0=ds0b,ds1=ds1b)
ax[0,0].plot(st25['TEMP'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=1)
ax[0,1].plot(st25['PSAL'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=1)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Station 25 - RAPROCAN2012 ',markerfacecolor='r', markersize=10),
],loc='lower right')
ax[1,0].plot(st25['TEMP'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=1)
ax[1,1].plot(st25['PSAL'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=1)
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Station 25 - RAPROCAN2012 ',markerfacecolor='r', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f462cefb160>
fig,ax = full_profiles(ds0=ds0b,ds1=ds1b,markersize=4)
ax[0,0].set_ylim([2000,1500]);
ax[0,0].plot(st25['TEMP'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=4)
ax[0,1].plot(st25['PSAL'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=4)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Station 25 - RAPROCAN2012 ',markerfacecolor='r', markersize=10),
],loc='lower right')
ax[1,0].plot(st25['TEMP'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=4)
ax[1,1].plot(st25['PSAL'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=4)
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Station 25 - RAPROCAN2012 ',markerfacecolor='r', markersize=10),
],loc='lower right')
ax[0,0].set_xlim(4,6.5); ax[1,0].set_xlim(4,6.5);
ax[0,1].set_xlim(35.,35.5); ax[1,1].set_xlim(35.,35.5);
# TS DIAGRAM
fig,ax = full_ts(ds0=ds0b,ds1=ds1b)
sc_b=ax[0].scatter(st25['SA'],st25['PTEMP'],c=st25['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k',linewidths=0.5)
sc_b=ax[1].scatter(st25['SA'],st25['PTEMP'],c=st25['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k',linewidths=0.5)
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Station 25 - RAPROCAN2012',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Station 25 - RAPROCAN2012',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f46296cce10>
# TS DIAGRAM
fig,ax = full_ts(ds0=ds0b,ds1=ds1b,vmin=27.8,vmax=27.9,sigma=40)
ax[0].set_ylim(4,7.5); ax[1].set_ylim(4,7.5)
ax[0].set_xlim(35.2,35.6); ax[1].set_xlim(35.2,35.6)
sc_b=ax[0].scatter(st25['SA'],st25['PTEMP'],c=st25['SIG0'],s=20,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k',linewidths=0.5)
sc_b=ax[1].scatter(st25['SA'],st25['PTEMP'],c=st25['SIG0'],s=20,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k',linewidths=0.5)
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Station 25 - RAPROCAN2012',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Station 25 - RAPROCAN2012',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f46294bcbe0>
# GET DATA FROM REPO DATA COPY (cache=False because new profiles are added to the repo)
dsbe = DataFetcher(cache=False,src='erddap',mode='expert').float(6903010).to_xarray()
# CALCULATE TEOS10 VARIABLE
dsbe.argo.teos10(['SA','SIG0','PTEMP'])
# TURN TO PROFILES
dsbe = dsbe.argo.point2profile()
dsbe
<xarray.Dataset>
Dimensions: (N_LEVELS: 1018, N_PROF: 18)
Coordinates:
* N_PROF (N_PROF) int64 0 1 2 3 4 5 6 ... 12 13 14 15 16 17
TIME (N_PROF) datetime64[ns] 2020-12-10T18:26:00 ......
* N_LEVELS (N_LEVELS) int64 0 1 2 3 4 ... 1014 1015 1016 1017
LATITUDE (N_PROF) float64 29.17 29.15 29.13 ... 29.95 30.47
LONGITUDE (N_PROF) float64 -19.01 -19.0 ... -18.65 -18.74
Data variables:
CONFIG_MISSION_NUMBER (N_PROF) int64 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
CYCLE_NUMBER (N_PROF) int64 1 1 2 3 4 5 6 ... 12 13 14 15 16 17
DATA_MODE (N_PROF) <U1 'R' 'R' 'R' 'R' ... 'R' 'R' 'R' 'R'
DIRECTION (N_PROF) <U1 'D' 'A' 'A' 'A' ... 'A' 'A' 'A' 'A'
PLATFORM_NUMBER (N_PROF) int64 6903010 6903010 ... 6903010 6903010
POSITION_QC (N_PROF) int64 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
PRES (N_PROF, N_LEVELS) float32 8.7 10.4 ... nan nan
PRES_ADJUSTED (N_PROF, N_LEVELS) float32 nan nan nan ... nan nan
PRES_ADJUSTED_ERROR (N_PROF, N_LEVELS) float32 nan nan nan ... nan nan
PRES_ADJUSTED_QC (N_PROF) int64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
PRES_QC (N_PROF) int64 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
PSAL (N_PROF, N_LEVELS) float32 36.946 36.947 ... nan
PSAL_ADJUSTED (N_PROF, N_LEVELS) float32 nan nan nan ... nan nan
PSAL_ADJUSTED_ERROR (N_PROF, N_LEVELS) float32 nan nan nan ... nan nan
PSAL_ADJUSTED_QC (N_PROF) int64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
PSAL_QC (N_PROF, N_LEVELS) int64 1 1 1 ... 99999 99999
PTEMP (N_PROF, N_LEVELS) float64 21.32 21.32 ... nan nan
SA (N_PROF, N_LEVELS) float64 37.12 37.12 ... nan nan
SIG0 (N_PROF, N_LEVELS) float64 25.89 25.89 ... nan nan
TEMP (N_PROF, N_LEVELS) float32 21.32 21.325 ... nan
TEMP_ADJUSTED (N_PROF, N_LEVELS) float32 nan nan nan ... nan nan
TEMP_ADJUSTED_ERROR (N_PROF, N_LEVELS) float32 nan nan nan ... nan nan
TEMP_ADJUSTED_QC (N_PROF) int64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TEMP_QC (N_PROF, N_LEVELS) int64 1 1 1 ... 99999 99999
TIME_QC (N_PROF) int64 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
VERTICAL_SAMPLING_SCHEME (N_PROF) <U207 'Primary sampling: averaged [10 ...
Attributes:
DATA_ID: ARGO
DOI: http://doi.org/10.17882/42182
Fetched_from: https://www.ifremer.fr/erddap
Fetched_by: kbalem
Fetched_date: 2021/05/21
Fetched_constraints: phy;WMO6903010
Fetched_uri: ['https://www.ifremer.fr/erddap/tabledap/ArgoFloats...
history: Transformed with point2profilearray([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17])
array(['2020-12-10T18:26:00.000000000', '2020-12-12T05:26:30.000000000',
'2020-12-22T05:27:30.000000000', '2021-01-01T05:33:30.000000000',
'2021-01-11T05:37:30.000000000', '2021-01-21T05:34:30.000000000',
'2021-01-31T05:26:30.000000000', '2021-02-10T05:37:30.000000000',
'2021-02-20T05:30:30.000000000', '2021-03-02T05:38:30.000000000',
'2021-03-12T05:33:30.000000000', '2021-03-22T05:25:30.000000000',
'2021-04-01T05:35:30.000000000', '2021-04-11T05:38:30.000000000',
'2021-04-21T05:42:30.000000000', '2021-05-01T05:46:30.000000000',
'2021-05-11T05:45:30.000000000', '2021-05-21T05:47:30.000000000'],
dtype='datetime64[ns]')array([ 0, 1, 2, ..., 1015, 1016, 1017])
array([29.165725 , 29.150605 , 29.13182833, 29.12126333, 29.09465167,
29.18438 , 29.42158667, 29.65736833, 29.91031 , 30.14338667,
30.22611333, 30.13541333, 29.86356 , 29.670635 , 29.50829 ,
29.58076333, 29.95490167, 30.46821667])array([-19.00882667, -19.00287833, -19.10077167, -19.18482 ,
-19.22271333, -19.26173167, -19.32334333, -19.46715667,
-19.65580833, -19.75253833, -19.77647 , -19.868995 ,
-19.82508833, -19.75431167, -19.47863 , -18.96217 ,
-18.65334 , -18.73503833])array([1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
array([ 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17])array(['R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
'R', 'R', 'R', 'R', 'R'], dtype='<U1')array(['D', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A'], dtype='<U1')array([6903010, 6903010, 6903010, 6903010, 6903010, 6903010, 6903010,
6903010, 6903010, 6903010, 6903010, 6903010, 6903010, 6903010,
6903010, 6903010, 6903010, 6903010])array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
array([[ 8.7, 10.4, 12.3, ..., nan, nan, nan],
[ 2.8, 4. , 5. , ..., nan, nan, nan],
[ 3. , 4.2, 5. , ..., nan, nan, nan],
...,
[ 3.1, 3.9, 4.7, ..., nan, nan, nan],
[ 3. , 4.2, 5.1, ..., nan, nan, nan],
[ 3. , 4. , 5.2, ..., nan, nan, nan]], dtype=float32)array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
array([[36.946, 36.947, 36.947, ..., nan, nan, nan],
[36.945, 36.945, 36.945, ..., nan, nan, nan],
[36.954, 36.957, 36.957, ..., nan, nan, nan],
...,
[36.928, 36.925, 36.93 , ..., nan, nan, nan],
[36.956, 36.957, 36.956, ..., nan, nan, nan],
[36.971, 36.971, 36.971, ..., nan, nan, nan]],
dtype=float32)array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
array([[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999],
...,
[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999]])array([[21.31830394, 21.32297325, 21.32460151, ..., nan,
nan, nan],
[21.22645527, 21.22822286, 21.23002928, ..., nan,
nan, nan],
[20.9804228 , 20.9831898 , 20.9830356 , ..., nan,
nan, nan],
...,
[20.66540943, 20.66725578, 20.67210415, ..., nan,
nan, nan],
[20.79242483, 20.79419579, 20.79402343, ..., nan,
nan, nan],
[20.87942298, 20.87723205, 20.87800099, ..., nan,
nan, nan]])array([[37.1204376 , 37.12144259, 37.12143883, ..., nan,
nan, nan],
[37.11942595, 37.11942744, 37.11942869, ..., nan,
nan, nan],
[37.12846748, 37.13148538, 37.13148642, ..., nan,
nan, nan],
...,
[37.10235176, 37.09933631, 37.10436188, ..., nan,
nan, nan],
[37.13048703, 37.13149226, 37.13048888, ..., nan,
nan, nan],
[37.14556279, 37.14556353, 37.14556442, ..., nan,
nan, nan]])array([[25.89078343, 25.89024791, 25.8897928 , ..., nan,
nan, nan],
[25.91548947, 25.91500105, 25.91450166, ..., nan,
nan, nan],
[25.99023381, 25.99176049, 25.99180368, ..., nan,
nan, nan],
...,
[26.05662937, 26.05383959, 26.05633067, ..., nan,
nan, nan],
[26.0433088 , 26.04358682, 26.04287314, ..., nan,
nan, nan],
[26.03092169, 26.03152285, 26.03131274, ..., nan,
nan, nan]])array([[21.32 , 21.325, 21.327, ..., nan, nan, nan],
[21.227, 21.229, 21.231, ..., nan, nan, nan],
[20.981, 20.984, 20.984, ..., nan, nan, nan],
...,
[20.666, 20.668, 20.673, ..., nan, nan, nan],
[20.793, 20.795, 20.795, ..., nan, nan, nan],
[20.88 , 20.878, 20.879, ..., nan, nan, nan]],
dtype=float32)array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
array([[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999],
...,
[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999]])array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
array(['Primary sampling: averaged [10 sec sampling, 1 dbar average from surface to 400 dbar; 10 sec sampling, 2 dbar average from 400 dbar to 1400 dbar; 10 sec sampling, 5 dbar average from 1400 dbar to 1000 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.0 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.7 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.8 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.0 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.5 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.1 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.1 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.4 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.0 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.0 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.0 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.2 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.5 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.3 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.3 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.6 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.2 dbar]'],
dtype='<U207')fig=plt.figure(figsize=(6,6))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
plt.plot(dsbe['LONGITUDE'],dsbe['LATITUDE'],'ro-')
plt.plot(ds0['LONGITUDE'],ds0['LATITUDE'],'bo-')
plt.plot(ds1['LONGITUDE'],ds1['LATITUDE'],'go-')
[<matplotlib.lines.Line2D at 0x7f46293005c0>]
We'll plot only until CYCLE 10, after that profiles positions differ a bit
ds0b=ds0.isel(N_PROF=[0,1,2,3,4,5,6,7,8,9])
ds1b=ds1.isel(N_PROF=[0,1,2,3,4,5,6,7,8,9])
dsbe0=dsbe.isel(N_PROF=[0,1,2,3,4,5,6,7,8,9])
fig,ax = full_profiles(ds0=ds0b,ds1=ds1b)
ax[0,0].plot(dsbe0['TEMP'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=0.5)
ax[0,1].plot(dsbe0['PSAL'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=0.5)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='SBE Float 6903010',markerfacecolor='r', markersize=10),
],loc='lower right')
ax[1,0].plot(dsbe0['TEMP'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=0.5)
ax[1,1].plot(dsbe0['PSAL'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=0.5)
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='SBE Float 6903010',markerfacecolor='r', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f4629dcde80>
# ZOOM
fig,ax = full_profiles(ds0=ds0b,ds1=ds1b,markersize=4)
ax[0,0].set_ylim([2000,1500]);
ax[0,0].plot(dsbe0['TEMP'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=4)
ax[0,1].plot(dsbe0['PSAL'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=4)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='SBE Float 6903010',markerfacecolor='r', markersize=10),
],loc='lower right')
ax[1,0].plot(dsbe0['TEMP'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=4)
ax[1,1].plot(dsbe0['PSAL'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=4)
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='SBE Float 6903010',markerfacecolor='r', markersize=10),
],loc='lower right')
ax[0,0].set_xlim(4,6.5); ax[1,0].set_xlim(4,6.5);
ax[0,1].set_xlim(35.,35.5); ax[1,1].set_xlim(35.,35.5);
# TS DIAGRAM
fig,ax = full_ts(ds0=ds0b,ds1=ds1b)
sc_b=ax[0].scatter(dsbe0['SA'],dsbe0['PTEMP'],c=dsbe0['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k',linewidths=0.5)
sc_b=ax[1].scatter(dsbe0['SA'],dsbe0['PTEMP'],c=dsbe0['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k',linewidths=0.5)
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='SBE Float 6903010',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='SBE Float 6903010',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f4612dfd5f8>
# TS DIAGRAM
fig,ax = full_ts(ds0=ds0b,ds1=ds1b,vmin=27.8,vmax=27.9,sigma=40)
ax[0].set_ylim(4,7.5); ax[1].set_ylim(4,7.5)
ax[0].set_xlim(35.2,35.6); ax[1].set_xlim(35.2,35.6)
sc_b=ax[0].scatter(ds1b['SA'],ds1b['PTEMP'],c=ds1b['SIG0'],s=10,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k',linewidths=0.5)
sc_b=ax[1].scatter(ds1b['SA'],ds1b['PTEMP'],c=ds1b['SIG0'],s=10,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k',linewidths=0.5)
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='SBE Float 6903010',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='SBE Float 6903010',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f4612b7c828>
def along_isot(isotherm):
fig,ax = plt.subplots(2,1,figsize=(18,12),sharex=True)
ds0_ai = ds0.where((ds0['PTEMP']<isotherm+.1)&(ds0['PTEMP']>isotherm-.1),drop=True).mean('N_LEVELS')
ds1_ai = ds1.where((ds1['PTEMP']<isotherm+.1)&(ds1['PTEMP']>isotherm-.1),drop=True).mean('N_LEVELS')
dsbe_ai = dsbe.where((dsbe['PTEMP']<isotherm+.1)&(dsbe['PTEMP']>isotherm-.1),drop=True).mean('N_LEVELS')
ax[0].plot(ds0_ai['CYCLE_NUMBER'],ds0_ai['PRES'],'o-',label=str(wmos[0]))
ax[0].plot(ds1_ai['CYCLE_NUMBER'],ds1_ai['PRES'],'o-',label=str(wmos[1]))
ax[0].plot(dsbe_ai['CYCLE_NUMBER'],dsbe_ai['PRES'],'o-',label='sbe 6903010')
#ax[0].set_xlabel('CYCLE')
ax[0].set_ylabel('PRES')
ax[0].legend()
ax[0].set_title('Pressure along isotherm '+str(isotherm)+'°C')
ax[1].plot(ds0_ai['CYCLE_NUMBER'],ds0_ai['SA'],'o-',label=str(wmos[0]))
ax[1].plot(ds1_ai['CYCLE_NUMBER'],ds1_ai['SA'],'o-',label=str(wmos[1]))
ax[1].plot(dsbe_ai['CYCLE_NUMBER'],dsbe_ai['SA'],'o-',label='sbe 6903010')
ax[1].set_xlabel('CYCLE')
ax[1].set_ylabel('Salinity')
ax[1].legend()
ax[1].set_title('Salinity along isotherm '+str(isotherm)+'°C')
return fig,ax
for i in [15.,12.5,10.,7.5,5.]:
fig,ax = along_isot(i)
/opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype)